package org.dxy.domain.event.workorder;

import org.dxy.domain.event.AggregateTypeEnum;
import org.dxy.domain.event.DomainEvent;

/**
 * 返工工序跳过事件（可选）
 * <p>
 * 语义：返工工单执行时跳过了某个工序
 * <p>
 * 触发：执行调度时判定跳过
 * <p>
 * 关注者：质检上下文（记录"没做这道工序"）
 * <p>
 * 用途：
 * <ul>
 *   <li>记录返工过程中跳过的工序</li>
 *   <li>为质检提供工序执行状态信息</li>
 *   <li>支持返工过程的可追溯性</li>
 * </ul>
 * 
 * @author dxy
 * @since 1.0.0
 */
public record ReworkStepSkippedEvent(
    /** 返工工单ID */
    Long reworkOrderId,
    /** 返工工单编码 */
    String reworkOrderCode,
    /** 被跳过的工序ID */
    Long stepId,
    /** 工序编码 */
    String stepCode,
    /** 跳过原因 */
    String reason,
    /** 跳过时间 */
    java.time.LocalDateTime skippedTime
) implements DomainEvent {
    
    @Override
    public Long aggregateId() {
        return reworkOrderId;
    }

    @Override
    public String aggregateType() {
        return AggregateTypeEnum.WORK_ORDER.getKey();
    }

    @Override
    public String eventType() {
        return WorkOrderEventTypeEnum.REWORK_STEP_SKIPPED.getKey();
    }

    /**
     * 获取工单事件类型枚举
     */
    public WorkOrderEventTypeEnum getWorkOrderEventType() {
        return WorkOrderEventTypeEnum.REWORK_STEP_SKIPPED;
    }
}